/**
 * 
 * @param fn 事件触发的回调函数
 * @param delay 延迟时间
 */
 function throttle(fn, delay = 100) {
  let timer = null;

  return function () {
    if (timer) {
      return
    }
    timer = setTimeout(() => {
      // 执行事件的回调函数
      fn.apply(this, arguments);
      // 执行后清空定时器
      timer = null
    }, delay)
  }
}

// 调用
let dom = document.getElementById('div');
dom.addEventListener('drag', throttle(function () {
  console.log('drag');
}, 300));
